package scheduler

import "webProject/crawler/model"

type ParseResult struct {
	//解析出来的下一个页面
	Request []Request
	//解析出来的数据
	Items    []model.JobItem
}

type Request struct {
	Url string
	kd string
	pn string
	//ParserFunc ParserFunc
	Parser Parser
}

//带两个函数的接口
type Parser interface {
	Parse(contents []byte, url string) ParseResult
	Serialize() (name string, args interface{})
}

type NilParser struct{}

func (NilParser) Parse(_ []byte, _ string) ParseResult {
	return ParseResult{}
}

func (NilParser) Serialize() (name string, args interface{}) {
	return "NilParser", nil
}


type ParserFunc func(contents []byte, url string) ParseResult
// 函数类型的Parser
type FuncParser struct {
	parser ParserFunc //对应解析函数
	name   string //函数名
}

func (f *FuncParser) Parse(contents []byte, url string) ParseResult {
	return f.parser(contents, url)
}

func (f *FuncParser) Serialize() (name string, args interface{}) {
	return f.name, nil
}

